package operator.condition;

import io.reactivex.Observable;
import io.reactivex.functions.Predicate;
import util.Printer;
import util.RxJavaHelper;
import util.ThreadHelper;

/**
 * 一旦条件不成立，立即终止
 */
class TakeWhileOperator {

    public static void main(String[] args) {
        takeWhile();
    }

    /**
     * 根据一个函数来判断是否发射数据，当函数返回值为true的时候正常发射数据；
     * 当函数返回false的时候丢弃所有后面的数据(不包含临界值)
     */
    static void takeWhile(){
        Observable.just(1, 2, 3)
                .takeWhile(new Predicate<Integer>() {
                    @Override
                    public boolean test(Integer integer) throws Exception {
                        Printer.print("test integer = " + integer);
                        return integer < 2;
                    }
                })
                .subscribe(RxJavaHelper.getConsumer());
        ThreadHelper.sleep();
    }


}
